package ru.assa.signalka;

import java.util.ArrayList;
import java.util.Arrays;

import android.content.Context;
import android.text.style.BulletSpan;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ToggleButton;

public class SyncToggleButton extends ToggleButton {
	
	private String command ;
	private ArrayList<View> views; 
	private Context context;
	private boolean value_getted = false;
		
	public SyncToggleButton(Context context) {
		super(context);
		this.context = context;
	}
	
	public SyncToggleButton(Context context, AttributeSet attrs) {
		super(context, attrs);
		this.context = context;
	}
	
	public SyncToggleButton(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		this.context = context;
	}
	
	public void setCommand(String command){
		this.command = command;
		MainActivity.command_view.put(command, this);
//		performClick();
	} //setCommand
	
	public String getCommand(){
		return this.command;
	} //getCommand

	public boolean getValueGetted(){
		return value_getted;	
	}//getValueGetted
	
	public void setDependView(View ... v){
		this.views = new ArrayList<View>(Arrays.asList(v));
		updateDepends(isChecked());
	}
	
	private void getValue(){ 
		if (command != null && isEnabled()){
		performClick(); // конечно надо callOnClick() но он появиться только в 15том апи;
		}
//		if (context instanceof ButtonCallbackListener && command != null && isEnabled() ) {
//			ButtonCallbackListener bcl = (ButtonCallbackListener) context;
//			bcl.onButtonEnableCallback(this, "?");
//		}
	}
	
	private void updateDepends(boolean enable){
		if (views != null) for ( View v : views ){
			if (v != null && v.isEnabled() != enable ) v.setEnabled(enable);
		}
	}
	
	public void onUpdated(){
	 	setClickable(false); //Нажата и недоступна до прихода ответа
	 	setPressed(true);
	}
	
	public void setUpdate(boolean enabled){
	 	setClickable(true); 
	 	setPressed(false);
	 	setChecked(enabled);
		updateDepends(enabled);
		value_getted = true;
	}
	
	@Override
	public void setEnabled(boolean enabled){
		super.setEnabled(enabled);
		getValue();
		if (!enabled) value_getted = false;
	}
	
//	@Override
//	public void setChecked(boolean checked){
//		super.setChecked(checked);
////		updateDepends(checked);
//	}
}
